package cn.tedu.rabbitmqspring.m3;

import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;

//简单模式 ：
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }

    //定义交换机
    @Bean
    public FanoutExchange logsExchange(){
        // 参数 ： 1名称 2持久 3自动删除
        //默认是持久交换机
        return new FanoutExchange("logs",false,false);
    }


    //用生产者 发送消息
    @Autowired
    private Producer p;
    //消费者是自动接收的

    /**
     * @PostConstruct
     *      spring在完成扫描创建实例，完成所有的依赖注入后，会自动的执行 @postConstruct方法
     *
     *      spring单线程执行下面的流程
     *      创建实例 --> 完成注入 --> @postConstruct ---> 后续执行
     *
     */
    @PostConstruct
    public void test(){

        new Thread(() -> p.send()).start();



    }


}
